package 转换流;

import org.junit.Test;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class 将字节流转换为字符流 {
    FileInputStream fis=null;
    InputStreamReader isr=null;
    @Test
    public void test(){
        try {
            //创建文件对象
            //提供字节流输入
            fis=new FileInputStream("read.txt");//以字节流读入数据
            //提供转换流
            //将字节流数据转换为字符流数据,可以指明以什么字符集转换；一般都是以输入文件的保存时字符集进行转换,不然就会有乱码
            isr=new InputStreamReader(fis,"UTF-8");//默认字符集就是utf-8
            //输入数据
            char[] bytes=new char[10];//这里要声明字符数组，而不是字节数组
            int len;
            while ((len=isr.read(bytes))!=-1){//将输入的数据，遍历输出在控制台上
                String str = new String(bytes,0,len);
                System.out.println(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
        //关闭资源
            if (isr != null) {
                try {
                    isr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
//            if (fis != null) {
//                try {fis.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//            }
        }
    }
}
